/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.clima.dto;

import com.brain.core.dto.EmpresaDto;
import com.brain.core.dto.OrganizacionDto;
import com.brain.core.dto.ParametroDto;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.validation.constraints.Size;
import org.hibernate.annotations.LazyCollection;
import org.hibernate.annotations.LazyCollectionOption;
/**
 *
 * @author Cmontes
 */
@Entity
    @Table(name = "TCLAB_ENCUESTA")
public class EncuestaDto implements Serializable {

    private static final long serialVersionUID = 1L;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "SEQ_ENCUESTA")
    @TableGenerator(name = "SEQ_ENCUESTA", table = "TCORE_ENTIDAD", pkColumnName = "NOMBRE", valueColumnName = "CORRELATIVO", pkColumnValue = "TCLAB_ENCUESTA", allocationSize = 1)
    private Long id;
    @JoinColumn(name = "EMPRESA", referencedColumnName = "ID")
    @ManyToOne
    private EmpresaDto empresaDto;
    @JoinColumn(name = "ORGANIZACION", referencedColumnName = "ID")
    @ManyToOne
    private OrganizacionDto organizacionDto;
    @JoinColumn(name = "ESTADO", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto estadoDto;
    @Size(max = 100)
    @Column(name = "NOMBRE")
    private String nombre;
    @Size(max = 250)
    @Column(name = "TITULO")
    private String titulo;
    @JoinColumn(name = "TIPO_ENCUESTA", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto tipoEncuestaDto;
    @Column(name = "ES_ANONIMA")
    private Boolean esAnonima;
    @Column(name = "FECHA_INICIO")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaInicio;
    @Column(name = "FECHA_FIN")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaFin;
    @Size(max = 250)
    @Column(name = "DESCRIPCION")
    private String descripcion;    
    @Column(name = "TOTAL_ENCUESTADOS")
    private Integer totalEncuestados;
    @Column(name = "TOTAL_NO_ENCUESTADOS")    
    private Integer totalNoEncuestados;
    @Column(name = "TOTAL_OBJETIVO")    
    private Integer totalObjetivo;
    @JoinColumn(name = "ENCUESTA_BASE", referencedColumnName = "ID")
    @ManyToOne
    private EncuestaDto encuestaBaseDto;        
    @Column(name = "ES_PLANTILLA")
    private Boolean esPlantilla;
    @Column(name = "URL")
    private Boolean url;
    @Column(name = "FECHA_CREACION")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaCreacion;
    @Column(name = "USUARIO_CREACION")
    private Long usuarioCreacion;
    @Size(max = 100)
    @Column(name = "TERMINAL_CREACION")
    private String terminalCreacion;
    
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "encuestaDto")
    @LazyCollection(LazyCollectionOption.FALSE)
    private List<PreguntaDto> listaPreguntas;
    
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "encuestaDto")
    @LazyCollection(LazyCollectionOption.FALSE)
    private List<EncuestadoDto> listaEncuestados;
    
    public EncuestaDto() {
    }

    public EncuestaDto(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public ParametroDto getEstadoDto() {
        return estadoDto;
    }

    public void setEstadoDto(ParametroDto estadoDto) {
        this.estadoDto = estadoDto;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public String getTitulo() {
        return titulo;
    }

    public void setTitulo(String titulo) {
        this.titulo = titulo;
    }

    public ParametroDto getTipoEncuestaDto() {
        return tipoEncuestaDto;
    }

    public void setTipoEncuestaDto(ParametroDto tipoEncuestaDto) {
        this.tipoEncuestaDto = tipoEncuestaDto;
    }

    public Boolean getEsAnonima() {
        return esAnonima;
    }

    public void setEsAnonima(Boolean esAnonima) {
        this.esAnonima = esAnonima;
    }

    public Date getFechaInicio() {
        return fechaInicio;
    }

    public void setFechaInicio(Date fechaInicio) {
        this.fechaInicio = fechaInicio;
    }

    public Date getFechaFin() {
        return fechaFin;
    }

    public void setFechaFin(Date fechaFin) {
        this.fechaFin = fechaFin;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public Integer getTotalEncuestados() {
        return totalEncuestados;
    }

    public void setTotalEncuestados(Integer totalEncuestados) {
        this.totalEncuestados = totalEncuestados;
    }

    public Integer getTotalNoEncuestados() {
        return totalNoEncuestados;
    }

    public void setTotalNoEncuestados(Integer totalNoEncuestados) {
        this.totalNoEncuestados = totalNoEncuestados;
    }

    public Integer getTotalObjetivo() {
        return totalObjetivo;
    }

    public void setTotalObjetivo(Integer totalObjetivo) {
        this.totalObjetivo = totalObjetivo;
    }

    public EncuestaDto getEncuestaBaseDto() {
        return encuestaBaseDto;
    }

    public void setEncuestaBaseDto(EncuestaDto encuestaBaseDto) {
        this.encuestaBaseDto = encuestaBaseDto;
    }

    public Boolean getEsPlantilla() {
        return esPlantilla;
    }

    public void setEsPlantilla(Boolean esPlantilla) {
        this.esPlantilla = esPlantilla;
    }

    public Boolean getUrl() {
        return url;
    }

    public void setUrl(Boolean url) {
        this.url = url;
    }

    public Date getFechaCreacion() {
        return fechaCreacion;
    }

    public void setFechaCreacion(Date fechaCreacion) {
        this.fechaCreacion = fechaCreacion;
    }

    public Long getUsuarioCreacion() {
        return usuarioCreacion;
    }

    public void setUsuarioCreacion(Long usuarioCreacion) {
        this.usuarioCreacion = usuarioCreacion;
    }

    public String getTerminalCreacion() {
        return terminalCreacion;
    }

    public void setTerminalCreacion(String terminalCreacion) {
        this.terminalCreacion = terminalCreacion;
    }

    public List<PreguntaDto> getListaPreguntas() {
        return listaPreguntas;
    }

    public void setListaPreguntas(List<PreguntaDto> listaPreguntas) {
        this.listaPreguntas = listaPreguntas;
    }

    public List<EncuestadoDto> getListaEncuestados() {
        return listaEncuestados;
    }

    public void setListaEncuestados(List<EncuestadoDto> listaEncuestados) {
        this.listaEncuestados = listaEncuestados;
    }

    public EmpresaDto getEmpresaDto() {
        return empresaDto;
    }

    public void setEmpresaDto(EmpresaDto empresaDto) {
        this.empresaDto = empresaDto;
    }

    public OrganizacionDto getOrganizacionDto() {
        return organizacionDto;
    }

    public void setOrganizacionDto(OrganizacionDto organizacionDto) {
        this.organizacionDto = organizacionDto;
    }
        
    
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof EncuestaDto)) {
            return false;
        }
        EncuestaDto other = (EncuestaDto) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.brain.clima.dto.EncuestaDto[ id=" + id + " ]";
    }
}
